home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45c / cmos.lst < prev    next >
Encoding:
File List  |  1995-03-26  |  37.0 KB  |  934 lines

  1.               CMOS Memory Map v1.24 Jan, 1995
  2. [Last Edit: 3/26/95]
  3.  
  4. Compiled from multiple sources by Padgett Peterson
  5. Corrections/additions/comments to: padgett@tccslr.dnet.mmc.com
  6.  
  7. No guarantees of any kind.
  8.  
  9. Copyrights/Trademarks belong to whoever they may belong to.
  10.  
  11. Found: Algorithm used by IBM in calculating CRC checksums for PS/2
  12.        (see bytes 32h-33h). Complex (recursive part is 12 lines of
  13.        assembly) and not yet validated for every model.
  14.  
  15.  
  16.             Background
  17.  
  18. The CMOS (complementary metal oxide semiconductor) memory is actually 
  19. a 64 or 128 byte battery-backed RAM memory module that is a part of the 
  20. system clock chip. Some IBM PS/2 models have the capability for a
  21. 2k (2048 byte) CMOS ROM Extension.
  22.  
  23. First used with clock-calender cards for the IBM PC-XT, when the PC/AT
  24. (Advanced Technology) was introduced in 1985, the Motorola MC146818 
  25. became a part of the motherboard. Since the clock only uses fourteen of 
  26. the RAM bytes, the rest are available for storing system configuration data.
  27.  
  28. Interestingly, the original IBM-PC/AT (Advanced Technology) standard for 
  29. the region 10h-3Fh is nearly universal with one notable exception: The 
  30. IBM PS/2 systems deviate considerably (Note: AMSTRAD 8086 machines were 
  31. among the first to actively use the CMOS memory available and since they 
  32. *predate* the AT, do not follow the AT standard).
  33.  
  34. This is just another example of how IBM created a standard, lost control 
  35. of it, tried to replace it, failed and lost market share in the process. 
  36.  
  37. Originally, the IBM PC/AT only made use of a small portion of CMOS memory
  38. and was defined in the IBM PC/AT Technical Reference Manual, specifically 
  39. bytes 10h, 12h, 14h-18h, 2Eh-33h. The balance was left undefined but was 
  40. quickly appropriated by various BIOS manufacturers for such user-selectable 
  41. options such as wait states, clock speeds, initial boot drive selection, and 
  42. password storage.
  43.  
  44. Later, as CMOS memory requirements grew, newer clock chips with 128
  45. bytes of RAM came into use. However the fact remains that once the AT 
  46. standard was established, only IBM has tried to change the definitions 
  47. of that first description.
  48.  
  49.             Accessing the CMOS
  50.  
  51. The CMOS memory exists outside of the normal address space and cannot
  52. contain directly executable code. It is reachable through IN and OUT
  53. commands at port number 70h (112d) and 71h (113d). To read a CMOS byte,
  54. an OUT to port 70h is executed with the address of the byte to be read and
  55. an IN from port 71h will then retrieve the requested information. The 
  56. following BASIC fragment will read 128 CMOS bytes and print them to the 
  57. screen in 8 rows of 16 values.
  58.  
  59. CMOS RAM space has an upper limit of 128 bytes because of the structure
  60. of port 70: only bits 0-6 are used for addressing, bit 7 is used to 
  61. enable (0) or disable (1) Non-Maskable Interrupts (NMI) and explains why
  62. IBM uses 80h OR <address> to read/write data & follows with  a "throw-away"
  63. call.
  64.  
  65. Note that if the CMOS only has 64 bytes available, addressing will 
  66. generally wrap and addresses from 40h-7Fh will mirror 00h-3Fh. Output will 
  67. be hexadecimal.
  68.  
  69. 10 CLS
  70. 20 FOR i = 0 TO &H7F 
  71. 30 OUT &H70, i
  72. 40 PRINT USING "\   \"; HEX$(INP(&H71));
  73. 50 NEXT i
  74. 60 PRINT " " 
  75.  
  76. Note: where not otherwise noted, all data points are expressed as BYTES
  77.       these are eight bit values and are read from MSB to LSB e.g.
  78.       0000 0000     0101 1010 binary would be written as 5Ah
  79.       7654 3210     where only some bits are used this is represented with
  80.                     Xs e.g bits 5-3 would be shown as 00xx x000
  81.  
  82.  
  83.         Organization of CMOS Memory - Clock
  84.  
  85. 00h-0Eh is defined by the clock hardware and all must follow it. Other 
  86. manufacturers generally follow the same format as specified for the
  87. region 10h - 2Fh. Some also follow the IBM format for 30h-33h but not all 
  88. (Zenith in particular is different).
  89.  
  90. The first fourteen bytes are dedicated to the MC146818 chip clock functions 
  91. and consist of ten read/write data registers and four status registers, two 
  92. of which are read/write and two of which are read only.
  93.  
  94. The format of the ten clock data registers (bytes 00h-09h) is:
  95.  
  96.  00h Seconds       (BCD 00-59, Hex 00-3B) Note: Bit 7 is read only      
  97.  01h Second Alarm  (BCD 00-59, Hex 00-3B; "don't care" if C0-FF)
  98.  02h Minutes       (BCD 00-59, Hex 00-3B)
  99.  03h Minute Alarm  (BCD 00-59, Hex 00-3B; "don't care" if C0-FF))       
  100.  04h Hours         (BCD 00-23, Hex 00-17 if 24 hr mode)
  101.                    (BCD 01-12, Hex 01-0C if 12 hr am)
  102.                    (BCD 81-92. Hex 81-8C if 12 hr pm)         
  103.  05h Hour Alarm    (same as hours; "don't care" if C0-FF))     
  104.  06h Day of Week   (01-07 Sunday=1)    
  105.  07h Date of Month (BCD 01-31, Hex 01-1F)    
  106.  08h Month         (BCD 01-12, Hex 01-0C)         
  107.  09h Year          (BCD 00-99, Hex 00-63)         
  108.  
  109. BCD/Hex selection depends on Bit 2 of register B (0Bh)
  110. 12/24 Hr selection depends on Bit 1 of register B (0Bh)
  111. Alarm will trigger when contents of all three Alarm byte registers
  112. match their companions.
  113.  
  114. The following is the on-chip status register information. 
  115.  
  116.  0Ah Status Register A (read/write) (usu 26h)
  117.   Bit 7     - (1) time update cycle in progress, data ouputs undefined 
  118.               (bit 7 is read only)
  119.   Bit 6,5,4 - 22 stage divider. 010b - 32.768 Khz time base (default)
  120.   Bit 3-0   - Rate selection bits for interrupt.
  121.               0000b - none
  122.               0011b - 122 microseconds (minimum)
  123.               1111b - 500 milliseconds  
  124.               0110b - 976.562 microseconds (default)
  125.  
  126.  0Bh Status Register B (read/write) 
  127.   Bit 7 - 1 enables cycle update, 0 disables
  128.   Bit 6 - 1 enables periodic interrupt
  129.   Bit 5 - 1 enables alarm interrupt
  130.   Bit 4 - 1 enables update-ended interrupt
  131.   Bit 3 - 1 enables square wave output
  132.   Bit 2 - Data Mode - 0: BCD, 1: Binary
  133.   Bit 1 - 24/12 hour selection - 1 enables 24 hour mode
  134.   Bit 0 - Daylight Savings Enable - 1 enables
  135.  
  136.  0Ch Status Register C (Read only)
  137.   Bit 7 - Interrupt request flag - 1 when any or all of bits 6-4 are
  138.           1 and appropriate enables (Register B) are set to 1. Generates
  139.           IRQ 8 when triggered.
  140.   Bit 6 - Periodic Interrupt flag
  141.   Bit 5 - Alarm Interrupt flag 
  142.   Bit 4 - Update-Ended Interrupt Flag
  143.   Bit 3-0 ???
  144.  
  145.  0Dh Status Register D (read only)
  146.   Bit 7 - Valid RAM - 1 indicates batery power good, 0 if dead or
  147.           disconnected.
  148.   Bit 6-0 ???
  149.  
  150. ---------------------------------------------
  151.  
  152.         Organization of CMOS Memory - non-Clock
  153.  
  154. The last two bytes in the first hexadecimal decade (hexade ?) were not 
  155. specified in the PC/AT but may have the following use on some systems:
  156.  
  157.  0Eh (PS/2) Diagnostic Status Byte 
  158.      Bit 7 - When set (1) indicates clock has lost power
  159.      Bit 6 - (1) indicates incorrect checksum
  160.      Bit 5 - (1) indicates that equipment configuration is incorrect
  161.                  power-on check requires that atleast one floppy be installed
  162.      Bit 4 - (1) indicates error in memory size
  163.      Bit 3 - (1) indicates that controller or disk drive failed initialization
  164.      Bit 2 - (1) indicates that time is invalid
  165.      Bit 1 - (1) indicates installed adaptors do not match configuration
  166.      Bit 0 - (1) indicates a time-out while reading adaptor ID
  167.  
  168.  0Eh (AMSTRAD) 6  BYTEs time and date machine last used
  169.  
  170. ---------------------------------------------
  171.  0Fh Reset Code (IBM PS/2 "Shutdown Status Byte")
  172.      00h-03h    perform power-on reset
  173.      04h    INT 19h reboot
  174.      05h    flush keyboard and jump via 40h:67h
  175.      06h-07h    reserved
  176.      08h    used by POST during protected-mode RAM test
  177.      09h    used for INT 15/87h (block move) support
  178.      0Ah    jump via 40h:67h
  179.      0Bh-FFh    perform power-on reset
  180.  
  181. ---------------------------------------------
  182.  
  183. The second group of values extends from address 10h to 2Dh. The word at
  184. 2Eh-2Fh is a byte-wise summation of the values in these bytes. Most BIOSes
  185. will generate a CMOS Checksum error if this value is invalid however many 
  186. programs ignore the checksum and report the apparent value. The current
  187. version of MSD reports my XT as having 20+ MB of extended memory. 
  188.  
  189. Where a definiton appears universal, no identification is made. Where
  190. the definition is thought to be specific to a manufacturer/model (AMI, 
  191. AMSTRAD, IBM AT, IBM PS/2) the identification is enclosed in parens. The
  192. AMSTAD definitions appear to relate to 8088/8086 (PC and PC/XT class)
  193. mchines only. AT class machines appear to adhere to IBM PC/AT fornat.
  194.  
  195. ---------------------------------------------
  196.  10h - Floppy Drive Type
  197.  
  198.   Bits 7-4 - First Floppy Disk Drive Type
  199.    0h      No Drive
  200.    1h      360 KB 5 1/4 Drive
  201.    2h      1.2 MB 5 1/4 Drive - note: not listed in PS/2 technical manual
  202.    3h      720 KB 3 1/2 Drive
  203.    4h     1.44 MB 3 1/2 Drive
  204.    5h-Fh  unused (??? 5h: 2.88 Mb 3 1/2 Drive ???)
  205.  
  206.    Bits 3-0 Second Floppy Disk Drive Type (bit settings same as A)
  207.  
  208.    Hence a PC having a 5 1/4 1.2 Mb A: drive and a 1.44 Mb B: drive will
  209.    have a value of 24h in byte 10h. With a single 1.44 drive: 40h.
  210.  
  211. ---------------------------------------------
  212.  11h - (IBM-PS/2) First Fixed Disk Drive Type Byte (00-FFh) Note: if IBM
  213.    ESDI or SCSI drive controller is used, CMOS drive type will be zero (00 -
  214.    no drive) and Int 13h will be directed to controller ROM.
  215.  
  216.  11h - (AMI) Keyboard Typematic Data 
  217.   Bit 7 Enable Typematic (1 = On)
  218.   Bits 6-5 Typematic Delay (wait before begin repeating)
  219.    00b 250 ms
  220.    01b 500 ms
  221.    10b 750 ms
  222.    11b 100 ms
  223.   Bits 4-0 Typematic Rate char/sec e.g. 01010b = 12.0 cps
  224.    00000b - 300  01000b - 159  10000b - 75  11000b - 37
  225.    00001b - 267  01001b - 133  10001b - 67  11001b - 33
  226.    00010b - 240  01010b - 120  10010b - 60  11010b - 30
  227.    00011b - 218  01011b - 109  10011b - 55  11011b - 27
  228.    00100b - 200  01100b - 100  10100b - 50  11100b - 25
  229.    00101b - 185  01101b -  92  10101b - 46  11101b - 23
  230.    00110b - 171  01110b -  86  10110b - 43  11110b - 21
  231.    00111b - 160  01111b -  80  10111b - 40  11111b - 20
  232.  
  233.  11h - (AMI) Advanced Setup Options
  234.   bit 7 mouse enabled
  235.   bit 6 test memory above 1 megabyte
  236.   bit 5 generate clicks during memory test
  237.   bit 4 enable memory parity check
  238.   bit 3 display key for Setup while booting
  239.   bit 2 store user-defined disk data at top of memory instead of 0030h:0000h
  240.   bit 1 request F1 keypress on boot error
  241.  
  242.  11h - (AWARD) Configuration Bits
  243.     Bit 7   NumLock ON at reboot.
  244.     Bit 6   IDE Block Mode enabled.
  245.     Bit 5   ???
  246.     Bit 4   Shadow ROM BIOS at CC00-CFFF
  247.     Bit 3   Shadow ROM BIOS at C800-CBFF
  248.     Bit 2   ???
  249.     Bit 1   BIOS Password Enabled
  250.     Bit 0   0 = Password controls BIOS Setup Only
  251.             1 = Password required to enter System
  252.  
  253. ---------------------------------------------
  254.  12h - (IBM PS/2) Second Fixed Disk Drive Type (00-FFh) - see 11h
  255.  12h - Hard Disk Data
  256.   Bits 7-4 First Hard Disk Drive
  257.    00     No drive
  258.    01-0Eh Hard drive Type 1-14
  259.    0Fh    Hard Disk Type 16-255 (actual Hard Drive Type is in CMOS RAM 1Ah)
  260.   Bits 3-0 Second Hard Disk Drive Type (same as above except extrnded type
  261.           will be found in 1Bh).
  262.   A PC with a single type 2 (20 Mb ST-225) hard disk will have 20h in byte 12h
  263.   Note: some PCs utilizing external disk controller ROMs will use type 0 to
  264.    disable ROM BIOS (e.g. Zenith 248 with Plus HardCard).
  265.  
  266. ---------------------------------------------
  267.  13h (AMI) Advanced Setup Options
  268.   Bit 7 Mouse Enabled (1 = On)
  269.   Bit 6 Test Memory above 1 MB (1 = On)
  270.   Bit 5 Memory Test Tick Sound (1 = On)
  271.   Bit 4 Memory Parity Error Check (1 = On)
  272.   Bit 3 Press <Esc> to Disable Memory Test (1 = On)
  273.   Bit 2 User-Defined Hard Disk (1 = Type 47 data area at address 0:300h)
  274.   Bit 1 Wait for <F1> Message if Error (1 = On)
  275.   Bit 0 Turn Num Lock On at boot (1 = On)
  276.  
  277.  13h (PS/2 MCA) internal POST operations
  278.   bit 7  POST sets VGA pel information
  279.   bit 6  RTC battery OK
  280.   bit 5  invoke ROM BASIC from POST
  281.   bit 4  POST sets typematic to 30cps/250ms delay instead of 10.9cps/500ms
  282.   bit 3-2 unused or unknown
  283.   bit 1  network password installed
  284.   bit 0  power-on password installed
  285.  
  286.  13h - (AWARD) Configuration Bits
  287.     Bit 7   Set Keyboard Typematic Rate
  288.     Bit 4-6 Keyboard Repeat Rate
  289.             000 =  6 cps
  290.             001 =  8 cps
  291.             010 = 10 cps
  292.             011 = 12 cps
  293.             100 = 15 cps
  294.             101 = 20 cps
  295.             110 = 24 cps
  296.             111 = 30 cps
  297.     Bit 2-3 Keyboard Typematic Delay
  298.             00 =  250 Msec
  299.             01 =  500 Msec
  300.             10 =  750 Msec
  301.             11 = 1000 Msec
  302.     Bit 1   ???
  303.     Bit 0   Boot Up Floppy Seek
  304.  
  305. ---------------------------------------------
  306.  14h - Equipment Byte 
  307.   Bits 7-6 Number of Floppy Drives (system must have at least one)
  308.    00b     1 Drive
  309.    01b     2 Drives
  310.    10b ??? 3 Drives
  311.    11b ??? 4 Drives
  312.   Bits 5-4 Monitor Type
  313.    00b Not CGA or MDA (observed for EGA & VGA)
  314.    01b 40x25 CGA
  315.    10b 80x25 CGA
  316.    11b MDA (Monochrome)
  317.   Bit 3 Display Enabled (1 = On)   (turned off to enable boot of rackmount)
  318.   Bit 2 Keyboard Enabled (1 = On)  (turned off to enable boot of rackmount)
  319.   Bit 1 Math coprocessor Installed (1 = On)
  320.   Bit 0 Floppy Drive Installed (1 = On) (turned off for rackmount boot)
  321.  
  322.  14h - (AMSTRAD)    BYTE user RAM checksum
  323.             LSB of sum of all user bytes should be AAh
  324.  
  325. ---------------------------------------------
  326.  15h - Base Memory in K, Low Byte
  327.  15h - (AMSTRAD)    WORD Enter key scancode/ASCII code
  328.             default: 1C0Dh  - emulates Return key
  329.  
  330. ---------------------------------------------
  331.  16h Base Memory in K, High Byte
  332.   The value in 15h-16h should be the same as in 0:413h and that returned by 
  333.   Int 12h. A PC having 640k (280h) of conventional memory will return 80h in 
  334.   byte 15h and 02h in byte 16h.
  335.  
  336. ---------------------------------------------
  337.  17h - Extended Memory in K, Low Byte
  338.  17h - (AMSTRAD)    WORD Forward delete key scancode/ASCII code
  339.             default: 2207h  - emulates ^G (bell/beep)
  340.  
  341. ---------------------------------------------
  342.  18h - Extended Memory in K, High Byte (some systems will only accommodate 
  343.   15 Mb extended or 16 Mb total) Format is the same as in 15h-16h
  344.  
  345. ---------------------------------------------
  346.  19h - First Extended Hard Disk Drive Type (not in original AT
  347.   specification but now nearly universally used except for PS/2).
  348.   0-Fh unused (would not require extension. Note: this has the effect
  349.     making type 0Fh (15d) unavailable.
  350.   10h-FFh First Extended Hard Drive Type 16d-255d
  351.  19h - (MCA) Slot 0 adapter card ID
  352.  
  353. For most manufacturers the last drive type (typically either 47d or 49d)
  354. is "user defined" and parameters are stored elsewhere in the CMOS.
  355.  
  356.  19h - (AMSTRAD)    WORD Joystick fire button 1 scancode/ASCII code
  357.             default: FFFFh  - (no translation)
  358.  
  359. ---------------------------------------------
  360.  1Ah - Second Extended Hard Disk Drive Type (see 19h above)
  361.  1Ah - (MCA) Slot 0 adapter card ID
  362.  
  363. ---------------------------------------------
  364.  1Bh - (MCA) Slot 1 adapter card ID
  365.  1Bh - (AMI) First Hard Disk (type 47) user defined: # of Cylinders, LSB
  366.  1Bh - (AMSTRAD)    WORD Joystick fire button 2 scancode/ASCII code
  367.             default: FFFFh  - (no translation)
  368.  1Bh - (PHOENIX) LSB of Word to 82335 RC1 roll compare register
  369.  
  370.  1Bh - (AWARD) Configuration Bits
  371.     Bit 7-4 ???
  372.     Bit 3   Shadow ROM BIOS at DC00-DFFF
  373.     Bit 2     "     "    "   " D800-DBFF
  374.     Bit 1     "     "    "   " D400-D7FF
  375.     Bit 0     "     "    "   " D000-D3FF
  376.  
  377. ---------------------------------------------
  378.  1Ch - (MCA) Slot 1 adapter card ID
  379.  1Ch - (AMI) First Hard Disk user defined: # of Cylinders, High Byte
  380.  1Ch - (PHOENIX) MSB of Word to 82335 RC1 roll compare register
  381.  
  382.  1Ch,1Dh - (AWARD) Password
  383.     Stored as a checksum or CRC using unknown algorithm.  (See byte 11h 
  384.     to enable)
  385.  
  386. ---------------------------------------------
  387.  1Dh - (MCA) Slot 2 adapter card ID
  388.  1Dh - (AMI) First Hard Disk user defined: Number of Heads
  389.  1Dh - (AMSTRAD)    WORD mouse button 1 scancode/ASCII code
  390.             default: FFFFh  - (no translation)
  391.  1Dh - (Zenith Z-200 monitor) Boot Drive Selection
  392.        Bits 6-5 (0xx0 0000)
  393.        00 - MFM Monitor
  394.        01 - First floppy drive (A:)
  395.        10 - First fixed disk (C:)
  396.        11 - First floppy drive (A:). If not there then First fixed disk (C:)
  397.             (this is the default).
  398.  1Dh - (PHOENIX) LSB of Word to 82335 RC2 roll compare register
  399.  1Dh - (AWARD) MSB of password checksum (see byte 1Ch)
  400.  
  401. ---------------------------------------------
  402.  1Eh - (MCA) Slot 2 adapter card ID
  403.  1Eh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, 
  404.        Low Byte
  405.  1Eh - (PHOENIX) MSB of Word to 82335 RC2 roll compare register
  406.  1Eh - (AWARD) 2nd Hard Disk user defined (type 48): # of Cylinders Low Byte
  407.  
  408. ---------------------------------------------
  409.  1Fh - (MCA) Slot 3 adapter card ID
  410.  1Fh - (AMI) First Hard Disk user defined: Write Precompensation Cylinder, 
  411.        High Byte
  412.  1Fh - (AMSTRAD)    WORD mouse button 2 scancode/ASCII code
  413.             default: FFFFh  - (no translation)
  414.  1Fh - (AWARD) 2nd Hard Disk user defined (type 48): # of Cylinders High Byte
  415.  
  416. ---------------------------------------------
  417.  20h - (MCA) Slot 3 adapter card ID
  418.  20h - (AMI) First Hard Disk user defined: Control Byte
  419.      bits 7-6 no retries (1)
  420.      bit 5    bad sector map at last cylinder+1
  421.      bit 4    unused (0)
  422.      bit 3    more than 8 heads
  423.      bits 2-0 unused (0)
  424.  20h - (PHOENIX) First user defined hard disk (type 48) Cylinders LSB
  425.  20h - (AWARD) 2nd Hard Disk user defined (type 48): Number of Heads
  426.  
  427. ---------------------------------------------
  428.  21h - (MCA) Programmable Option Select configuration byte 2
  429.  21h - (AMI) First Hard Disk user defined: Landing Zone, Low Byte
  430.  21h - (AMSTRAD) BYTE mouse X scaling factor, default: 0Ah
  431.  21h - (PHOENIX) First user defined hard disk (type 48) Cylinders MSB
  432.  21h - (AWARD) 2nd Hard Disk user defined (type 48): Write Precomp Low Byte
  433.  
  434. ---------------------------------------------
  435.  22h - (MCA) Programmable Option Select configuration byte 3
  436.  22h - (AMI) First Hard Disk user defined: Landing Zone, High Byte
  437.  22h - (AMSTRAD) BYTE mouse Y scaling factor default: 0Ah
  438.  22h - (PHOENIX) First user defined hard disk (type 48)  of Heads
  439.  22h - (AWARD) 2nd Hard Disk user defined (type 48): Write Precomp High Byte
  440.  
  441. ---------------------------------------------
  442.  23h - (MCA) Programmable Option Select configuration byte 4
  443.  23h - (AMI) First Hard Disk user defined: # of Sectors per track
  444.  23h - (AMSTRAD) BYTE initial VDU mode and drive count  default: 20h
  445.     bit 7:  enables extended serial flow control
  446.             (NB this is buggy)
  447.     bit 6:  set if two floppy drives installed
  448.     bits 5 & 4: (from Amstrad 1640 tech ref)
  449.          0   0      Internal video adapter
  450.          0   1      CGA card added; 40 x 25 mode
  451.          1   0      CGA card added; 80 x 25 mode
  452.          1   1      mono card added; 80 x 25 mode
  453.  23h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. LSB
  454.  23h - (AWARD) 2nd Hard Disk user defined (type 48): Landing Zone Low Byte
  455.  
  456. ---------------------------------------------
  457.  24h - (MCA) Programmable Option Select configuration byte 5
  458.  24h - (AMI) Second Hard Disk user defined: # of Cylinders, Low Byte
  459.  24h - (AMSTRAD)    BYTE initial VDU character attribute, default: 7h
  460.  24h - (PHOENIX) First user defined hard disk (type 48) Write Precomp. MSB
  461.  24h - (AWARD) 2nd Hard Disk user defined (type 48): Landing Zone High Byte
  462.  
  463. ---------------------------------------------
  464.  25h - (AMI) Second Hard Disk user defined: # of Cylinders, High Byte
  465.  25h - (AMSTRAD)    BYTE size of RAM disk in 2K blocks
  466.         default: 0  - only used by the RAMDISK software supplied.
  467.  25h - (PHOENIX) First user defined hard disk (type 48) Parking zone LSB
  468.  25h - (AWARD) 2nd Hard Disk user defined (type 48): Sectors per Track
  469.  
  470. ---------------------------------------------
  471.  26h - (AMI) Second Hard Disk user defined: Number of Heads
  472.  26h - (AMSTRAD)    BYTE initial system UART setup byte
  473.             default: E3h - format as for Int 14h fn 0
  474.  26h - (PHOENIX) First user defined hard disk (type 48) Parking zone MSB
  475.  26h - (AWARD) 1st Hard Disk user defined (type 49): # of Cylinders Low Byte
  476.  
  477. ---------------------------------------------
  478.  27h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, 
  479.        Low Byte
  480.  27h - (AMSTRAD)    BYTE initial external UART setup byte
  481.             default: E3h - format as for Int 14h fn 0
  482.  27h - (PHOENIX) First user defined hard disk (type 48) Sectors per track
  483.  27h - (AWARD) 1st Hard Disk user defined (type 49): # of Cylinders High Byte
  484.  
  485. ---------------------------------------------
  486.  28h - (AMI) Second Hard Disk user defined: Write Precompensation Cylinder, 
  487.        High Byte
  488.  28h - (HP Vectra) checksum over bytes 29h-2Dh
  489.  28h - (AWARD) 1st Hard Disk user defined (type 49): Number of Heads
  490.  
  491.  28h-3Fh (AMSTRAD) 24 BYTEs user applications default: zeroes
  492.  
  493. ---------------------------------------------
  494.  29h - (AMI) Second Hard Disk user defined: Control Byte (80h if # of heads 
  495.        is equal or greater than 8)
  496.  29h - (PHOENIX) LSB word to Intel 82335 CC0 compare register
  497.  29h - (AWARD) 1st Hard Disk user defined (type 49): Write Precomp  Low Byte
  498.  29h - (HP Vectra) officially reserved "CMOS_HPCONFIG"
  499.     bit 7: include byte 2Ch in checksum (default = 0)
  500.     bit 6: select second ROM video adapter as primary (default = 0)
  501.     bits 5-1: reserved
  502.     bit 0: manufacturing test enabled
  503.  
  504. ---------------------------------------------
  505.  2Ah - (AMI) Second Hard Disk user defined: Landing Zone, Low Byte
  506.  2Ah - (HP Vectra) officially reserved
  507.  2Ah - (PHOENIX) MSB word to Intel 82335 CC0 compare register
  508.  2Ah - (AWARD) 1st Hard Disk user defined (type 49): Write Precomp  High Byte
  509.  
  510. ---------------------------------------------
  511.  2Bh - (AMI) Second Hard Disk user defined: Landing Zone, High Byte
  512.  2Bh - (HP Vectra) officially reserved
  513.  2Bh - (PHOENIX) LSB word to Intel 82335 CC1 compare register
  514.  2Bh - (AWARD) 1st Hard Disk user defined (type 49): Landing Zone   Low Byte
  515.  
  516. ---------------------------------------------
  517.  2Ch - (AMI) Second Hard Disk user defined: # of Sectors per track
  518.  2Ch - (HP Vectra) officially reserved
  519.  2Ch - (COMPAQ) bit 6:  0 - numlock OFF on boot, 1 - numlock ON at boot
  520.  2Ch - (PHOENIX) MSB word to Intel 82335 CC1 compare register
  521.  2Ch - (AWARD) 1st Hard Disk user defined (type 49): Landing Zone   High Byte
  522.  
  523. ---------------------------------------------
  524.  2Dh - (AMI) Configuration Options 
  525.   Bit 7 Weitek Installed(1 = On)
  526.   Bit 6 Floppy Drive Seek - turn off for fast boot
  527.   Bit 5 Boot Order 0 - Drive C:, then A:
  528.                    1 - Drive A:, then C:
  529.   Bit 4 Boot Speed (0 - Low; 1 - High)
  530.   Bit 3 External Cache Enable (1 = On)
  531.   Bit 2 Internal Cache Enable (1 = On)
  532.   Bit 1 Use Fast Gate A20 after boot (1 = On)
  533.   Bit 0 Turbo Switch (1 = On)
  534.  2Dh - (HP Vectra) officially reserved
  535.  2Dh - (PHOENIX) Checks for values AAh or CCh
  536.  2Dh - (AWARD) 1st Hard Disk user defined (type 49): Sectors per Track
  537.   
  538. ---------------------------------------------
  539.  2Eh - Standard CMOS Checksum, High Byte
  540.  2Fh - Standard CMOS Checksum, Low Byte
  541.  
  542.  2Eh and 2Fh are as defined by the original IBM PC/AT specification and
  543.  represent a byte-wise additive sum of the values in locations 10h-2Dh only,
  544.  00h-0Fh and 30h-33h are not included. This definition is used by most
  545.  clone manufacturers including AMI, Compaq, Tandon, NEC, and Zenith. The 
  546.  IBM PS/2 line does not follow this standard with the range 19h-31h being 
  547.  undefined.  On the original HP Vectra, this checksum only covers locations
  548.  10h to 20h, with a separate checksum for bytes 29h-2Ch (see offset 28h).
  549.  
  550.  
  551. ---------------------------------------------
  552.  30h - Extended Memory in K, Low Byte
  553.  
  554. ---------------------------------------------
  555.  31h - Extended Memory in K, High Byte 
  556.  (??? this appears to mirror the value in bytes 17h-18h.) 
  557.  
  558. ---------------------------------------------
  559.  32h - Century Byte (BCD value for the century - currently 19)
  560.  32h - (IBM-PS2) Configuration CRC low byte. CRC for range 10h-31h
  561.  
  562. ---------------------------------------------
  563.  33h - Information Flag
  564.   Bit 7 128K (??? believe this indicates the presence of the special 128k
  565.               memory expansion board for the AT to boost the "stock" 512k
  566.               to 640k - all machines surveyed have this bit set)
  567.   Bits 6-0 ???
  568.  33h - (IBM PS/2) Configuration CRC high byte (see entry for 32h)
  569.  33h - (PHOENIX) Bit 4 (000x 0000) bit 4 from Intel CPU register CP0
  570.  
  571. ---------------------------------------------
  572.  34h - (AMI) Shadowing & Boot Password
  573.   Bits 7-6 Password Selection
  574.    00b Disable 10b Reserved
  575.    01b Set     11b Boot
  576.   Bit 5 C8000h Shadow ROM (Bit 1 = On) 
  577.   Bit 4 CC000h Shadow ROM (Bit 1 = On)
  578.   Bit 3 D0000h Shadow ROM (Bit 1 = On)
  579.   Bit 2 D4000h Shadow ROM (Bit 1 = On)
  580.   Bit 1 D8000h Shadow ROM (Bit 1 = On)
  581.   Bit 0 DC000h Shadow ROM (Bit 1 = On)
  582.  
  583.  34h-3Ah - (AWARD) ??? unused ???  Defaults to all FFh's.
  584.  
  585. ---------------------------------------------
  586.  35h - (AMI) Shadowing
  587.   Bit 7 E0000h Shadow ROM (Bit 1 = On)
  588.   Bit 6 E4000h Shadow ROM (Bit 1 = On)
  589.   Bit 5 E8000h Shadow ROM (Bit 1 = On)
  590.   Bit 4 EC000h Shadow ROM (Bit 1 = On)
  591.   Bit 3 F0000h Shadow ROM (Bit 1 = On)
  592.   Bit 2 C0000h Shadow ROM (Bit 1 = On)
  593.   Bit 1 C4000h Shadow ROM (Bit 1 = On)
  594.   Bit 0 Reserved
  595.  35h - (PHOENIX) Second user defined hard disk (type 48) Cylinders LSB
  596.        NOTE: used only when PS/2 style password is NOT in effect.
  597.  
  598. ---------------------------------------------
  599.  36h - (PHOENIX) Second user defined hard disk (type 48) Cylinders MSB
  600.        NOTE: used only when PS/2 style password is NOT in effect.
  601.  36h - (AWARD)
  602.     bit 6: IDE 32-bit transfer mode
  603.  
  604. ---------------------------------------------
  605.  37h - (IBM PS/2) Date Century Byte 
  606.  37h - (PHOENIX) Second user defined hard disk (type 48) # of heads
  607.        NOTE: used only when PS/2 style password is NOT in effect.
  608.  
  609. ---------------------------------------------
  610.  38h-3Dh (AMI) Encrypted Password
  611.  
  612.  38h-3Fh ??? (IBM PS/2) Encrypted Password. Initialized to 00h in all
  613.      bytes. Will accept from 1-7 scan codes. 
  614.  
  615.  38h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. LSB
  616.        NOTE: used only when PS/2 style password is NOT in effect.
  617.  
  618. ---------------------------------------------
  619.  39h - (PHOENIX) Second user defined hard disk (type 48) Write Precomp. MSB
  620.        NOTE: used only when PS/2 style password is NOT in effect.
  621.  
  622. ---------------------------------------------
  623.  3Ah - (PHOENIX) Second user defined hard disk (type 48) Parking Zone LSB
  624.        NOTE: used only when PS/2 style password is NOT in effect.
  625.  
  626. ---------------------------------------------
  627.  3Bh - (PHOENIX) Second user defined hard disk (type 48) Parking Zone MSB
  628.        NOTE: used only when PS/2 style password is NOT in effect.
  629.  
  630.  3Bh - (AWARD) Configuration Bits
  631.     Bit 4-7 Screen Colors Used in Setup
  632.         0   Yellow/White on Blue (Default)
  633.         1   Magenta/White on Blue
  634.         2   Yellow/Black on Green
  635.         3   Yellow/Green on Cyan
  636.         4   Black/Yellow on Cyan
  637.         5   Brown/White on Cyan
  638.         6   White/Green on Red
  639.         7   White/White on Red
  640.         8   Green/White on Magenta
  641.         9   Yellow/Red on Magenta
  642.         Ah  Red/White on Grey
  643.         Bh  Yellow/White on Grey
  644.         Ch  Cyan/White on Grey
  645.         Dh  Cyan/Yellow on Black
  646.         Eh  White on Black (Monochrome)
  647.         Fh  Green/Red on Black
  648.     Bit 3   ??? Default = 0
  649.     Bit 2   ??? Default = 0
  650.     Bit 1   ??? Default = 1
  651.     Bit 0   Enable External Cache
  652.  
  653. ---------------------------------------------
  654.  3Ch - (PHOENIX) Second user defined hard disk (type 48) Sectors per track
  655.        NOTE: used only when PS/2 style password is NOT in effect.
  656.  
  657.  3Ch - (AWARD) Boot Configuration Bits
  658.     Bit 7   1 = Disable Virus Warning on Boot
  659.     Bit 6,5 ???
  660.     Bit 4   Quick POST Enabled
  661.     Bit 3,2 ???
  662.     Bit 1   Enable Turbo Switch Input
  663.     Bit 0   0 = Boot from A, then C
  664.             1 = Boot from C, then A
  665.  
  666. ---------------------------------------------
  667.  3Dh - (AWARD) ???
  668.  
  669. ---------------------------------------------
  670.  3Eh - (AMI) Extended CMOS Checksum, High Byte (includes 34h - 3Dh)
  671.  
  672.  3Eh - (AWARD) Boot Configuration Bits
  673.     Bit 7   Shadow Video BIOS at C000h
  674.     Bit 6,5 ???
  675.     Bit 4   Swap Floppy Drive
  676.     Bit 3   ???
  677.     Bit 2   Don't Halt on Diskette Errors at Boot
  678.     Bit 1   Don't Halt on Keyboard Errors at Boot
  679.     Bit 0   Never Halt for any error at Boot
  680.  
  681. ---------------------------------------------
  682.  3Fh - (AMI) Extended CMOS Checksum, Low Byte (includes 34h - 3Dh)
  683.  3Fh - (AWARD) ???
  684.  
  685. ---------------------------------------------
  686.  
  687.  End of original 64 CMOS RAM bytes. Many modern chips now contain 128
  688.  bytes and the IBM PS/2 has provision for 2k of "Expansion CMOS". 
  689.  The AMI HI-FLEX description is below. If the chip does have only
  690.  64 bytes, addresses will wrap so that requests for bytes 40h-7Fh will 
  691.  return the same values as 00h-3Fh.
  692.  
  693. ---------------------------------------------
  694.  40h ???
  695.  
  696.  40h - (AWARD) Motherboard Chipset (SiS 85C501/85C502 shown)
  697.     Bit 7-1 ???
  698.     Bit 0   Automatic Configuration Enabled (Default: 1=enabled)
  699.  
  700. ---------------------------------------------
  701.  41h - (AMI)
  702.   Bits 7-6 IOR/IOW Wait states
  703.   Bits 5-4 16-bit DMA Wait States
  704.   Bits 3-2  8-bit DMA Wait States
  705.   Bit 1    EMR bit
  706.   Bit 0    DMA Clock Source
  707.  
  708. ---------------------------------------------
  709.  42h-43h ???
  710.  
  711.  42h-44h - (AWARD) ??? chipset setup ???
  712.  
  713. ---------------------------------------------
  714.  44h - (AMI)
  715.   Bit 4 NMI Power Fail Warning
  716.   Bit 3 NMI Local Bus Timeout
  717.  
  718. ---------------------------------------------
  719.  45h - (AMI) 
  720.   Bits 7-6 AT Bus 32-Bit Delay
  721.   Bits 5-4 AT Bus 16-Bit Delay
  722.   Bits 3-2 AT Bus 8-Bit Delay
  723.   Bits 1-0 AT Bus I/O Delay
  724.  
  725.  45h - (AWARD) Motherboard Chipset (SiS 85C501/85C502 shown)
  726.     Bit 7   System BIOS Cacheable (Default: 1=enabled)
  727.     Bit 6   Video BIOS Cacheable  (Default: 1=enabled)
  728.     Bit 6-0 ???
  729.  
  730. ---------------------------------------------
  731.  46h - (AMI)
  732.   Bits 7-6 AT Bus 32 Bit Wait States
  733.   Bits 5-4 AT Bus 16 Bit Wait States
  734.   Bits 3-2 AT Bus  8 Bit Wait States
  735.   Bits 1-0 AT Bus Clock Source
  736.  
  737.  46h thru 47h - (AWARD) ??? chipset setup ???
  738.  
  739. ---------------------------------------------
  740.  47h-50h ???
  741.  
  742.  48h-4Fh - (AWARD) ??? unused ???  Defaults to all FFh's.
  743.  
  744. ---------------------------------------------
  745.  50h - (AWARD) PCI Bus Slot 1 Latency Timer 0-255 (default: 0)
  746.  
  747. ---------------------------------------------
  748.  51h - (AMI)
  749.   Bit 7    Bank 0/1 RAS Precharge
  750.   Bit 6    Bank 0/1 Access Wait States
  751.   Bits 3-2 Bank 0/1 Wait States
  752.  
  753.  51h - (AWARD) PCI Bus Setup
  754.     Bit 7   PIRQ0# Interrupt Triggering
  755.             0 = Edge Sensitive,
  756.             1 = Level Sensitive
  757.     Bit 6-2 ??? Default: all 1's
  758.     Bit 0-1     Slot 1 IRQ Setup
  759.         00 = A-PIRQ0 (Default)
  760.         01 = B-PIRQ1
  761.         10 = C-PIRQ2
  762.         11 = D-PIRQ3
  763.  
  764. ---------------------------------------------
  765.  52h ???
  766.  52h - (AWARD) PCI Bus Slot 2 Latency Timer 0-255 (default: 0)
  767.  
  768. ---------------------------------------------
  769.  53h - (AMI)
  770.   Bit 7    Bank 2/3 RAS Precharge
  771.   Bit 6    Bank 2/3 Access Wait States
  772.   Bits 3-2 Bank 2/3 Wait States
  773.  
  774.  53h - (AWARD) PCI Bus Setup
  775.     Bit 7   PIRQ1# Interrupt Triggering
  776.             0 = Edge Sensitive,
  777.             1 = Level Sensitive
  778.     Bit 6-2 ??? Default: all 1's
  779.     Bit 0-1     Slot 2 IRQ Setup
  780.         00 = A-PIRQ1 (Default)
  781.         01 = B-PIRQ2
  782.         10 = C-PIRQ3
  783.         11 = D-PIRQ0
  784.  
  785. ---------------------------------------------
  786.  54h-7Fh ???
  787.  54h - (AWARD) PCI Bus Slot 3 Latency Timer 0-255 (default: 0)
  788.  
  789. ---------------------------------------------
  790.  55h - (AWARD) PCI Bus Setup
  791.     Bit 7   PIRQ2# Interrupt Triggering
  792.             0 = Edge Sensitive,
  793.             1 = Level Sensitive
  794.     Bit 6-2 ??? Default: all 1's
  795.     Bit 0-1     Slot 3 IRQ Setup
  796.         00 = A-PIRQ2 (Default)
  797.         01 = B-PIRQ3
  798.         10 = C-PIRQ0
  799.         11 = D-PIRQ1
  800.  
  801. ---------------------------------------------
  802.  56h - (AWARD) ?? reserved for PCI Bus Slot 4 Latency Timer ??
  803.  
  804. ---------------------------------------------
  805.  57h - (AWARD) PCI Bus Setup
  806.     Bit 7   PIRQ3# Interrupt Triggering
  807.             0 = Edge Sensitive,
  808.             1 = Level Sensitive
  809.     Bit 6-0 ??not used  Default: all 1's
  810.  
  811. ---------------------------------------------
  812.  58h - (AWARD) ?? reserved for PCI Bus Slot 5 Latency Timer ??
  813.     bit 3: onboard CMD IDE Mode 3
  814.  
  815. ---------------------------------------------
  816.  59h - (AWARD) ?? reserved for PCI Bus Setup ??
  817.  
  818. ---------------------------------------------
  819.  5Ah - (AWARD) PCI Bus IRQ Setup
  820.     Bit 4-7 PIRQ1# Interrupt Line (0=none, Bh=IRQ11, etc)
  821.     Bit 0-3 PIRQ0# Interrupt Line     "      "        "
  822.  
  823. ---------------------------------------------
  824.  5Bh - (AWARD) PCI Bus IRQ Setup
  825.     Bit 4-7 PIRQ3# Interrupt Line (0=none, Bh=IRQ11, etc)
  826.     Bit 0-3 PIRQ2# Interrupt Line     "      "        "
  827.  
  828. ---------------------------------------------
  829.  5Ch-5Fh - (AWARD) ??? unused ???  Defaults to all FFh's.
  830.  
  831. ---------------------------------------------
  832.  60h - (AWARD) Power Management
  833.     Bit 7       ???
  834.     Bit 6       Video Off Method
  835.         1  = V/H SYNC + Blank (default)
  836.         0  = Blank Screen
  837.     Bit 4,5  Video Off Option
  838.         00 = Always On (default)
  839.         01 = Suspend -> Off
  840.         10 = Suspend, Standby -> Off
  841.         11 = All Modes -> Off
  842.     Bit 3       PM Control by APM (1=Yes)
  843.     Bit 2       ???
  844.     Bit 0,1     Power Management Setup
  845.         00  User Defined
  846.         01  Disabled (default)
  847.         10  Minimum Power Savings (40 Minutes for all events)
  848.         11  Maximum Power Savings (20 Seconds for all events)
  849.  
  850. ---------------------------------------------
  851.  61h - (AWARD) Power Management
  852.     Bit 7   PM Event on HDD Ports Activity (1=enable)
  853.     Bit 6   PM Event on LPT Port Activity (1=enable)
  854.     Bit 5   PM Event on COM Port Activity (1=enable)
  855.     Bit 4   HDD Power Down on Suspend
  856.     Bit 0-3 HDD Power Down Time
  857.         0       Disabled
  858.         1-15    Time in Minutes
  859.  
  860. ---------------------------------------------
  861.  62h - (AWARD) Power Management
  862.     Bit 7-4     Standby Mode Setting (for User Defined)
  863.         0   Disabled
  864.         1   20 Seconds
  865.         2   1 Minute
  866.         3   5 Minutes
  867.         4   10 Minutes
  868.         5   15 Minutes
  869.         6   20 Minutes
  870.         7   30 Minutes
  871.         8   40 Minutes
  872.     Bit 0-3     Doze Mode Setting (for User Defined)
  873.         (See Standby Mode above)
  874.  
  875. ---------------------------------------------
  876.  63h - (AWARD) Power Management
  877.     Bit 7       Disable PM Event on IRQ3 Activity (COM2) (1=disable)
  878.     Bit 6       PM Event on VGA Activity (1=enable)
  879.     Bit 5       ??? (Defaults to 1)
  880.     Bit 4       PM Event on PCI/ISA Master Activity (1=enable)
  881.     Bit 0-3     Suspend Mode Setting (for User Defined)
  882.         (See Standby Mode above)
  883.  
  884. ---------------------------------------------
  885.  64h - (AWARD) Power Management
  886.     Bit 7       Disable PM Event on IRQ11 Activity (1=disable)
  887.     Bit 6       Disable PM Event on IRQ10 Activity (1=disable)
  888.     Bit 5       Disable PM Event on IRQ9 Activity (IRQ2 Redir) (1=disable)
  889.     Bit 4       Disable PM Event on IRQ8 Activity (RTC Alarm) (1=disable)
  890.     Bit 3       Disable PM Event on IRQ7 Activity (LPT1) (1=disable)
  891.     Bit 2       Disable PM Event on IRQ6 Activity (Floppy) (1=disable)
  892.     Bit 1       Disable PM Event on IRQ5 Activity (LPT2) (1=disable)
  893.     Bit 0       Disable PM Event on IRQ4 Activity (COM1) (1=disable)
  894.  
  895. ---------------------------------------------
  896.  65h - (AWARD) Power Management
  897.     Bit 7-4     ??? may be unused.  Defaults to all 1's
  898.     Bit 3       Disable PM Event on IRQ15 Activity (1=disable)
  899.     Bit 2       Disable PM Event on IRQ14 Activity (Hard Disk) (1=disable)
  900.     Bit 1       Disable PM Event on IRQ13 Activity (Coprocessor) (1=disable)
  901.     Bit 0       Disable PM Event on IRQ12 Activity (PS/2 Mouse) (1=disable)
  902.  
  903. ---------------------------------------------
  904.  66h-79h - (AWARD) ??? unused ???  Defaults to all FFh's.
  905.  
  906. ---------------------------------------------
  907.  68h-6Fh - (AWARD) IDE hard disk params for first drive on secondary IDE port
  908.  
  909. ---------------------------------------------
  910.  70h-77h - (AWARD) IDE hard disk params for second drive on secondary IDE port
  911.  
  912. ---------------------------------------------
  913.  7Ah - (AWARD) Extended CMOS Checksum, High Byte
  914.  
  915. ---------------------------------------------
  916.  7Bh - (AWARD) Extended CMOS Checksum, Low Byte
  917.     Award's extended checksum is the arithmetic sum of all the bytes
  918.     from 40h (64 decimal) through 79h (121 decimal).
  919.  
  920. ---------------------------------------------
  921.  
  922. Revision History
  923.  
  924. v1.24    Jan,  1995    Added Award info from Tim Farley (Ralf)
  925. v1.23   June, 1994    Added some MCA info from _The_Undocumented_PC_
  926. v1.22   Feb,  1994      Added NMI mask note
  927. v1.21   Jan,  1994      Added note for PS/2 checksum found
  928. v1.20    Sept, 1993      PHOENIX data from Wim Osterholt added
  929.                         additional AMI data from Howie (hjh@gwd.dst.gov.au)
  930. v1.15   June, 1993      AMSTRAD data updated
  931. v1.1     June, 1993    AMSTRAD & PS/2 data added 
  932. v1.0    June, 1993    First release: Motorola MC 146818,  PC-AT & AMI 
  933.                         "Hi-Flex" information baselined
  934.